package api.User;
import DAO.User;
import club.kingon.sql.builder.SqlBuilder;
import club.kingon.sql.builder.enums.Operator;
import com.alibaba.fastjson2.JSON;
import util.DBConnector;
import util.StanderRES;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ImplUserUser implements UseUser{

    @Override
    public String login(Map<String,Object> info) {
        if(info.get("userName")!=null && info.get("password")!=null){
            String password = info.get("password").toString();
            String username = info.get("userName").toString();

            List<User> users = DBConnector.result(conn -> conn.createQuery(SqlBuilder.selectAll().from(User.class).where(User::getUserName, Operator.EQ, username).and(User::getPassword, Operator.EQ, password).build()).executeAndFetch(User.class));
            if(users!=null&& !users.isEmpty()){
                User user = users.get(0);
                user.setPassword("");
                return  StanderRES.RES(StanderRES.Status.OK,users);
            }else {
                return StanderRES.RES(StanderRES.Status.FAILED,"账号或密码错误");
            }

        }else {
            return StanderRES.RES(StanderRES.Status.FAILED,"参数有误");
        }
    }

    @Override
    public String getInfo(String id) {
        if(!id.isEmpty()){
            System.out.println(SqlBuilder.selectAll().from(User.class).where(User::getId, Operator.EQ, ":id").build());
            List<User> users = DBConnector.result(C -> C.createQuery(SqlBuilder.selectAll().from(User.class).where(User::getId, Operator.EQ, id).build()).executeAndFetch(User.class));
            if(users!=null&& !users.isEmpty()){
                User user = users.get(0);
                user.setPassword("");
                return StanderRES.RES(StanderRES.Status.OK,users);
            }else {
                return StanderRES.RES(StanderRES.Status.FAILED,"没有找到该账户");
            }
        }
        return StanderRES.RES(StanderRES.Status.FAILED,"参数有误");
    }

    @Override
    public String addUser(String user_) {
        User user = JSON.parseObject(user_, User.class);
        if(user.getUserName().isEmpty()){
           return StanderRES.RES(StanderRES.Status.FAILED,"请输入用户名");
        }
        if(user.getPassword().isEmpty()){
            return StanderRES.RES(StanderRES.Status.FAILED,"请输入密码");
        }
        if (user.getAccount().isEmpty()){
            return StanderRES.RES(StanderRES.Status.FAILED,"请输入账号");
        }
        if (user.getAvatarPath().isEmpty()){
            return StanderRES.RES(StanderRES.Status.FAILED,"请输入头像地址");
        }
        Integer result = DBConnector.result((C) -> C.createQuery(SqlBuilder.insertInto(user).build()).executeUpdate().getResult());
        HashMap<String, Integer> map = new HashMap<>();
        map.put("inserted", result);
        return StanderRES.RES(StanderRES.Status.OK,map);
    }
}
